package LeetCode;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class LeetCodeMain26 {
    public int candy(int[] ratings) {
        int sum=0;
        int[] arr=new int[ratings.length];
        if (ratings.length==1){
            return 1;
        }
        Arrays.fill(arr,1);
        for (int i = 1; i < ratings.length; i++) {
            if (ratings[i]>ratings[i-1]){
                arr[i]=arr[i-1]+1;
            }
        }
        for (int i = ratings.length-2; i >= 0; i--) {
            if (ratings[i]>ratings[i+1]){
                arr[i]=Math.max(arr[i],arr[i+1]+1);
            }
        }
        for (int num:arr) {
            sum+=num;
        }
        return sum;
    }
    public boolean lemonadeChange1(int[] bills) {
        Map<Integer,Integer> map=new HashMap<>();
        if (bills[0]!=5){
            return false;
        }
        map.put(5,1);
        for (int i = 1; i < bills.length; i++) {
            int tmp=bills[i]-5;
            if (tmp==0){
                map.put(5,map.getOrDefault(5,0)+1);
            }else if (tmp==5){
                    int count=map.getOrDefault(5,0);
                    if (count==0){
                        return false;
                    }
                    else {
                        map.put(5,map.getOrDefault(5,0)-1);
                        map.put(10,map.getOrDefault(10,0)+1);
            }
            }else if (tmp==15){
                int count1=map.getOrDefault(10,0);
                int count2=map.getOrDefault(5,0);
                if (count1==0){
                    if (count2>=3){
                        map.put(5,map.getOrDefault(5,0)-3);
                        map.put(20,map.getOrDefault(20,0)+1);
                    }
                    else {
                        return false;
                    }
                }
                else {
                    if (count2>=1){
                        map.put(10,map.getOrDefault(10,0)-1);
                        map.put(5,map.getOrDefault(5,0)-1);
                        map.put(20,map.getOrDefault(20,0)+1);
                    }
                    else {
                        return false;
                    }
                }
            }
        }
        return true;
    }
    public boolean lemonadeChange(int[] bills) {
        int five=0;
        int ten=0;
        for (int num:bills) {
            if (num==5){
                five++;
            }else if (num==10){
                ten++;
                five--;
            }else if (ten>0){
                ten--;
                five--;
            }else {
                five-=3;
            }
            if (five<0){
                return false;
            }
        }
        return true;
    }
    //新年快乐，嘻嘻
}
